package cn.edu.zsc.rbac.dao;

import cn.edu.zsc.rbac.domain.entity.BaseEntity;

import java.util.Collection;

public interface IBaseDao <Entity extends BaseEntity>{
    /**
     * 检查指定的 id 是否存在对应的实体。
     *
     * @param id 实体的唯⼀标识符
     * @return 如果实体存在，则返回 {@code true}，否则返回 {@code false}
     */
    boolean existsById(int id);
    /**
     * 根据 id 查找对应的实体。
     *
     * @param id 实体的唯⼀标识符
     * @return 如果存在对应的实体，则返回实体对象；如果不存在，则返回 {@code null}
     */
    Entity findById(int id);
    /**
     * 获取所有的实体集合。
     *
     * @return 所有实体的集合
     */
    Collection<Entity> list();
    /**
     * 保存⼀个实体，如果实体已存在则进⾏更新。
     *
     * @param entity 要保存的实体
     * @return 保存后的实体对象，包含更新后的数据（如果有）
     */
    Entity save(Entity entity);
    /**
     * 根据 id 删除对应的实体。
     *
     * @param id 要删除的实体的唯⼀标识符
     * @return 被删除的实体对象
     */
    Entity delete(int id);
}
